package com.esms.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.esms.po.RankBonus;
import com.esms.service.IRankBonusService;
import com.esms.utils.Message;
import com.esms.vo.RankBonusPages;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;


/**
 * 职称Controller
 * @author lenovo
 *
 */
@Controller
public class RankBonusController {
    @Autowired
    private IRankBonusService service;

    public void setiRankBonusService(IRankBonusService iRankBonusService) {
        this.service = iRankBonusService;
    }
    
    /**
     * 添加职称奖金
     * @param bonus
     * @param name
     * @return
     */
    @RequestMapping("/insertRankBonus.do")
    @ResponseBody
    public Message doInsertRankBonus(RankBonus bonus){
        if(service.CountByName(bonus.getRankName())>0){
            return Message.error("请填写职称名称");
        }
        if(bonus.getRbBonus()<=0){
        	return Message.error("请填写职称奖金");
        }
            service.addRankBonus(bonus);
            return Message.success("职称奖金添加成功");
    }
    //查询出所有记录
    @RequestMapping("/findAll.do")
    public String doFindAll(@RequestParam(value="pn",defaultValue = "1") Integer pn, Model model){
        // 引入PageHelper分页插件
        // 在查询之前只需要调用，传入页码，以及每页的大小
        int pageSize = 10;
        PageHelper.startPage(pn, pageSize);
        // startPage后面紧跟的这个查询就是一个分页查询
        List<RankBonus> rbs = service.findAll();
        // 使用pageInfo包装查询后的结果，只需要将pageInfo交给页面就行了。
        // 封装了详细的分页信息,包括有我们查询出来的数据，传入连续显示的页数
        PageInfo page = new PageInfo(rbs, 5);
        model.addAttribute("pageInfo", page);
        return "admin/rank/rank-list.jsp";
    }

    /**
     * 职称奖金列表
     * @param pageNum
     * @param limit
     * @param rb_name
     * @return
     * @throws Exception
     */
    @RequestMapping("/findRankBonusList.do")
    @ResponseBody
    public RankBonusPages findSelective(
            @RequestParam(value="page", defaultValue="1")int pageNum,
            @RequestParam(value="limit", defaultValue="10") int limit,
            @RequestParam(value="rb_name", defaultValue="") String rb_name) throws Exception {
        /*return rb_name;*/
        List<RankBonus> list;
        //模糊查询，有多少个条件就接收多少个字段
        RankBonus rb = new RankBonus();
        rb.setRankName(rb_name);
        //pageNum:起始页面  pageSize:每页的大小
        PageHelper.startPage(pageNum,limit);
        //查找条件，一定要紧跟在startPage后
        list = service.findSelective(rb);
        PageInfo pageResult = new PageInfo(list);

        //设置前台需要的数据
        RankBonusPages rankBonusPages = new RankBonusPages();
        rankBonusPages.setCode(0);
        rankBonusPages.setMsg("");
        rankBonusPages.setCount((int) pageResult.getTotal());
        rankBonusPages.setData(pageResult.getList());
        return rankBonusPages;
    }

    /**
     * 根据Id进行删除职称
     * @param id
     * @return
     */
    @RequestMapping("rankBonusDelete.do")
    @ResponseBody
    public Message doDelete(int id){
       try {
    	   service.moveRankBonus(id);
       }catch (Exception e) {
		// TODO: handle exception
    	   return Message.error("删除失败,有关联数据存在");
	}
       return Message.success("删除成功");
    }
    /**
     * 更新职称奖金操作
     * @param id
     * @param rank
     * @param bonus
     * @return
     */
    @RequestMapping("/updateRankBonus.do")
    @ResponseBody
    public Message updateRankBonus(RankBonus bankBonus){
    	String rankName = bankBonus.getRankName();
    	if(StringUtils.isEmpty(rankName)) {
    		return Message.error("请填写职称名称");
    	}
    	
        RankBonus rankBonus=service.findByName(rankName);
        if(rankBonus!=null&& !rankBonus.getRbId().equals(bankBonus.getRbId())){
           return Message.error("职称名称已存在");
        }
        service.modifyRankName(bankBonus);
        return Message.success("职称编辑成功");
    }

}
